<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>posix::stream_descriptor</title>
    <link rel="stylesheet" href="../../boostbook.css" type="text/css">
    <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
    <link rel="home" href="../../index.html" title="Asio">
    <link rel="up" href="../reference.html" title="Reference">
    <link rel="prev" href="posix__descriptor_base/_descriptor_base.html"
          title="posix::descriptor_base::~descriptor_base">
    <link rel="next" href="post.html" title="post">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%">
    <tr>
        <td valign="top"><img alt="asio C++ library" width="250" height="60" src="../../asio.png"></td>
    </tr>
</table>
<hr>
<div class="spirit-nav">
    <a accesskey="p" href="posix__descriptor_base/_descriptor_base.html"><img src="../../prev.png" alt="Prev"></a><a
        accesskey="u" href="../reference.html"><img src="../../up.png" alt="Up"></a><a accesskey="h"
                                                                                       href="../../index.html"><img
        src="../../home.png" alt="Home"></a><a accesskey="n" href="post.html"><img src="../../next.png" alt="Next"></a>
</div>
<div class="section">
    <div class="titlepage">
        <div>
            <div><h3 class="title">
                <a name="asio.reference.posix__stream_descriptor"></a><a class="link"
                                                                         href="posix__stream_descriptor.html"
                                                                         title="posix::stream_descriptor">posix::stream_descriptor</a>
            </h3></div>
        </div>
    </div>
    <p>
        <a class="indexterm" name="asio.indexterm.posix__stream_descriptor"></a>
    </p>
    <p>
        Typedef for the typical usage of a stream-oriented descriptor.
    </p>
    <pre class="programlisting"><span class="keyword">typedef</span> <span
            class="identifier">basic_stream_descriptor</span> <span class="identifier">stream_descriptor</span><span
            class="special">;</span>
</pre>
    <h5>
        <a name="asio.reference.posix__stream_descriptor.h0"></a>
        <span><a name="asio.reference.posix__stream_descriptor.types"></a></span><a class="link"
                                                                                    href="posix__stream_descriptor.html#asio.reference.posix__stream_descriptor.types">Types</a>
    </h5>
    <div class="informaltable">
        <table class="table">
            <colgroup>
                <col>
                <col>
            </colgroup>
            <thead>
            <tr>
                <th>
                    <p>
                        Name
                    </p>
                </th>
                <th>
                    <p>
                        Description
                    </p>
                </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor__rebind_executor.html"
                           title="posix::basic_stream_descriptor::rebind_executor"><span class="bold"><strong>rebind_executor</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Rebinds the descriptor type to another executor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/bytes_readable.html"
                           title="posix::basic_stream_descriptor::bytes_readable"><span class="bold"><strong>bytes_readable</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        IO control command to get the amount of data that can be read without
                        blocking.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/executor_type.html"
                           title="posix::basic_stream_descriptor::executor_type"><span class="bold"><strong>executor_type</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        The type of the executor associated with the object.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/lowest_layer_type.html"
                           title="posix::basic_stream_descriptor::lowest_layer_type"><span class="bold"><strong>lowest_layer_type</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        A descriptor is always the lowest layer.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/native_handle_type.html"
                           title="posix::basic_stream_descriptor::native_handle_type"><span class="bold"><strong>native_handle_type</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        The native representation of a descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/wait_type.html"
                           title="posix::basic_stream_descriptor::wait_type"><span
                                class="bold"><strong>wait_type</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Wait types.
                    </p>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
    <h5>
        <a name="asio.reference.posix__stream_descriptor.h1"></a>
        <span><a name="asio.reference.posix__stream_descriptor.member_functions"></a></span><a class="link"
                                                                                               href="posix__stream_descriptor.html#asio.reference.posix__stream_descriptor.member_functions">Member
        Functions</a>
    </h5>
    <div class="informaltable">
        <table class="table">
            <colgroup>
                <col>
                <col>
            </colgroup>
            <thead>
            <tr>
                <th>
                    <p>
                        Name
                    </p>
                </th>
                <th>
                    <p>
                        Description
                    </p>
                </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/assign.html"
                           title="posix::basic_stream_descriptor::assign"><span
                                class="bold"><strong>assign</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Assign an existing native descriptor to the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/async_read_some.html"
                           title="posix::basic_stream_descriptor::async_read_some"><span class="bold"><strong>async_read_some</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Start an asynchronous read.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/async_wait.html"
                           title="posix::basic_stream_descriptor::async_wait"><span
                                class="bold"><strong>async_wait</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Asynchronously wait for the descriptor to become ready to read,
                        ready to write, or to have pending error conditions.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/async_write_some.html"
                           title="posix::basic_stream_descriptor::async_write_some"><span class="bold"><strong>async_write_some</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Start an asynchronous write.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/basic_stream_descriptor.html"
                           title="posix::basic_stream_descriptor::basic_stream_descriptor"><span class="bold"><strong>basic_stream_descriptor</strong></span></a>
                        <span class="silver">[constructor]</span>
                    </p>
                </td>
                <td>
                    <p>
                        Construct a stream descriptor without opening it. <br> <span class="silver"> —</span><br>
                        Construct a stream descriptor on an existing native descriptor.
                        <br> <span class="silver"> —</span><br> Move-construct a stream descriptor from another.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/cancel.html"
                           title="posix::basic_stream_descriptor::cancel"><span
                                class="bold"><strong>cancel</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Cancel all asynchronous operations associated with the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/close.html"
                           title="posix::basic_stream_descriptor::close"><span
                                class="bold"><strong>close</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Close the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/get_executor.html"
                           title="posix::basic_stream_descriptor::get_executor"><span
                                class="bold"><strong>get_executor</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Get the executor associated with the object.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/io_control.html"
                           title="posix::basic_stream_descriptor::io_control"><span
                                class="bold"><strong>io_control</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Perform an IO control command on the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/is_open.html"
                           title="posix::basic_stream_descriptor::is_open"><span
                                class="bold"><strong>is_open</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Determine whether the descriptor is open.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/lowest_layer.html"
                           title="posix::basic_stream_descriptor::lowest_layer"><span
                                class="bold"><strong>lowest_layer</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Get a reference to the lowest layer. <br> <span class="silver"> —</span><br> Get a const
                        reference to the lowest layer.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/native_handle.html"
                           title="posix::basic_stream_descriptor::native_handle"><span class="bold"><strong>native_handle</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Get the native descriptor representation.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/native_non_blocking.html"
                           title="posix::basic_stream_descriptor::native_non_blocking"><span class="bold"><strong>native_non_blocking</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Gets the non-blocking mode of the native descriptor implementation.
                        <br> <span class="silver"> —</span><br> Sets the non-blocking mode of the native descriptor
                        implementation.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/non_blocking.html"
                           title="posix::basic_stream_descriptor::non_blocking"><span
                                class="bold"><strong>non_blocking</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Gets the non-blocking mode of the descriptor. <br> <span class="silver"> —</span><br> Sets
                        the non-blocking mode of the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/operator_eq_.html"
                           title="posix::basic_stream_descriptor::operator="><span
                                class="bold"><strong>operator=</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Move-assign a stream descriptor from another.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/read_some.html"
                           title="posix::basic_stream_descriptor::read_some"><span
                                class="bold"><strong>read_some</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Read some data from the descriptor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/release.html"
                           title="posix::basic_stream_descriptor::release"><span
                                class="bold"><strong>release</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Release ownership of the native descriptor implementation.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/wait.html"
                           title="posix::basic_stream_descriptor::wait"><span class="bold"><strong>wait</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Wait for the descriptor to become ready to read, ready to write,
                        or to have pending error conditions.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="posix__basic_stream_descriptor/write_some.html"
                           title="posix::basic_stream_descriptor::write_some"><span
                                class="bold"><strong>write_some</strong></span></a>
                    </p>
                </td>
                <td>
                    <p>
                        Write some data to the descriptor.
                    </p>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
    <p>
        The <a class="link" href="posix__basic_stream_descriptor.html" title="posix::basic_stream_descriptor"><code
            class="computeroutput"><span class="identifier">posix</span><span class="special">::</span><span
            class="identifier">basic_stream_descriptor</span></code></a> class template
        provides asynchronous and blocking stream-oriented descriptor functionality.
    </p>
    <h5>
        <a name="asio.reference.posix__stream_descriptor.h2"></a>
        <span><a name="asio.reference.posix__stream_descriptor.thread_safety"></a></span><a class="link"
                                                                                            href="posix__stream_descriptor.html#asio.reference.posix__stream_descriptor.thread_safety">Thread
        Safety</a>
    </h5>
    <p>
        <span class="emphasis"><em>Distinct</em></span> <span class="emphasis"><em>objects:</em></span> Safe.
    </p>
    <p>
        <span class="emphasis"><em>Shared</em></span> <span class="emphasis"><em>objects:</em></span> Unsafe.
    </p>
    <p>
        Synchronous <code class="computeroutput"><span class="identifier">read_some</span></code> and
        <code class="computeroutput"><span class="identifier">write_some</span></code> operations are
        thread safe with respect to each other, if the underlying operating system
        calls are also thread safe. This means that it is permitted to perform concurrent
        calls to these synchronous operations on a single descriptor object. Other
        synchronous operations, such as <code class="computeroutput"><span class="identifier">close</span></code>,
        are not thread safe.
    </p>
    <h5>
        <a name="asio.reference.posix__stream_descriptor.h3"></a>
        <span><a name="asio.reference.posix__stream_descriptor.requirements"></a></span><a class="link"
                                                                                           href="posix__stream_descriptor.html#asio.reference.posix__stream_descriptor.requirements">Requirements</a>
    </h5>
    <p>
        <span class="emphasis"><em>Header: </em></span><code class="literal">asio/posix/stream_descriptor.hpp</code>
    </p>
    <p>
        <span class="emphasis"><em>Convenience header: </em></span><code class="literal">asio.hpp</code>
    </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">
            <div class="copyright-footer">Copyright © 2003-2022 Christopher M. Kohlhoff<p>
                Distributed under the Boost Software License, Version 1.0. (See accompanying
                file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
            </p>
            </div>
        </td>
    </tr>
</table>
<hr>
<div class="spirit-nav">
    <a accesskey="p" href="posix__descriptor_base/_descriptor_base.html"><img src="../../prev.png" alt="Prev"></a><a
        accesskey="u" href="../reference.html"><img src="../../up.png" alt="Up"></a><a accesskey="h"
                                                                                       href="../../index.html"><img
        src="../../home.png" alt="Home"></a><a accesskey="n" href="post.html"><img src="../../next.png" alt="Next"></a>
</div>
</body>
</html>
